Soru & Cevap

ListView EditText Focus Problemi

23.08.2016 - 01:56

Merhaba arkadaşlar,

ListView de item a long click listener vererek çalıştırıyorum buraya kadar sıkıntı yok fakat bu sefer de listview'in içindeki edittext e tıkladığımda focus olmuyor ve klavye açılmıyor. 

ListView de setOnItemLongClickListener methodunu çalıştırabilmek için itemin layoutuna bu kodu veriyorum :

android:descendantFocusability="blocksDescendants"

bu kod da edittext in focus olmasını engelliyor ben hem ListView setOnItemLongClickListener methodunun çalışmasını hem de edittext'in focus olmasını istiyorum bunu nasıl yapabilirim ? 

23 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user gmyucalfarukeren
gmyucalfarukeren
19.02.2023 - 07:34

Merhaba Alper,

Bu sorunu çözmek için, öncelikle android:descendantFocusability="blocksDescendants" özelliğini kaldırmalısınız. Bu özellik, ListView'in herhangi bir alt öğesine odaklanmasını engeller

Bunun yerine, ListView'in tıklanabilirliğini sağlamak için android:clickable="true" ve android:focusable="true" özelliklerini kullanabilirsiniz. Bu özellikler, ListView'in herhangi bir öğesine tıklanabilirlik ve odaklanabilirlik sağlar

Edittext'in de odaklanabilir olması için, ona da android:focusable="true" ve android:focusableInTouchMode="true" özelliklerini eklemelisiniz. Bu özellikler, EditText'in hem dokunma hem de klavye girişiyle odaklanabilmesini sağlar

Bir başka seçenek ise, ListView'in uzun tıklamasını yakaladıktan sonra, EditText'e odaklanmak için programatik olarak requestFocus() yöntemini çağırmaktır

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        EditText editText = view.findViewById(R.id.editText);
        editText.requestFocus();
        return true;
    }
});